package com.webside.playbackstatistics.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria;

import com.webside.playbackstatistics.model.AnaDailyStatEntity;
import com.webside.playbackstatistics.model.AnaSummaryStatEntity;
import com.webside.playbackstatistics.model.AntistopEntity;
import com.webside.playbackstatistics.model.PlayStatisticsEntity;
import com.webside.playbackstatistics.model.StatRankings;

/***
 * 
 * lpz
 * 
 * @author Administrator 播放统计
 */
public interface PlayStatisticsService {

	// 查询mongoDB里面播放数据
	List<PlayStatisticsEntity> selectAllPlayStat();

	// 统计平台今日点播总次数、视频播放总时长、评论数、点赞数、分享数信息。
	AnaDailyStatEntity selectSumCollectStat();

	
	// 统计平台昨日点播总次数、视频播放总时长、评论数、点赞数、分享数信息。
	AnaDailyStatEntity yesterdaySumCollectStat();
	// 根据传入的时间查询今日的的总评论数和点赞数
	int commentSum(Map timeAndType);

	// 调用方法获取每日统计数据,昨日统计数据,历史每天平均统计和历史峰值返回list集合

	List<AnaDailyStatEntity> getAnaDailyStatList();

	// 通过片名统计今日和昨日点播总次数、视频播放总时长、评论数、点赞数、分享数信息。
	List<AnaDailyStatEntity> conditionSumCollectStat(String seriesName);

	// 根据传入的时间和片名查询今日的的总评论数总评论数和点赞数
	int conditionCommentSum(Map timeTypeName);

	// 调用方法通过片名获取该片的每日统计数据,昨日统计数据,历史每天平均统计和历史峰值返回list集合
	List<AnaDailyStatEntity> getAnaDailyStatNameList(String seriesName);

	// 测试mongodb的聚合函数

	AnaDailyStatEntity cesshi();

	// 根据日期或者片名日期片名查询mongodb里面当天的各个时段的浏览数量

	Map hourCount(Date newDay, String seriesName);

	// 根据条件查询剧集播放统计排名
	Map statRankings(StatRankings statRankings);

	// 昨日排行：上一日（0:00-23:59）的剧集点播次数排行；
	// 昨日点播：上一日（0:00-23:59）的剧集点播次数；
	List<AnaSummaryStatEntity> yesterdayWas();

	// 上周点播：当前时间的上一自然周（周一－周日）的点播次数；
	// 上周排行：当前时间的上一自然周（周一－周日）的点播次数排行；
	List<AnaSummaryStatEntity> lastWeekRanking();

	// 截止到上周末点播
	// 截止到上周末排行
	List<AnaSummaryStatEntity> lastWeekClose();

	// 上月点播：当前时间的上一自然月（1- 30号）的点播次数；
	// 上月排行：当前时间的上一自然月（1-30号）的点播次数排行；
	List<AnaSummaryStatEntity> LastMonthRanking();

	// 截止到上月点播
	// 截止到上月排行
	List<AnaSummaryStatEntity> LastMonthClose();
	
	// 总点播：截止到昨日（23:59）的点播总次数；
	// 总排行：截止到昨日（23:59）的点播排行；
	List<AnaSummaryStatEntity> yesterdayWasClose();
	
	//日上升指数：＝前一日排行－昨日排行
	List<AnaSummaryStatEntity>  dayUpIndex();
	
	//周上升指数（最近一周）＝当前8日前排行－总排行
	List<AnaSummaryStatEntity>  WeekUpIndex();
	
	//月上升指数：＝截止到上月末－总排行
	List<AnaSummaryStatEntity>  MonthUpIndex();
	
	// 关键词搜索次数统计排行
	List<AntistopEntity> antistopRanking(String frame);

	
	
}
